<!doctype html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1" /> 
<meta http-equiv="Cache-Control" content="no-transform" /> 
<meta http-equiv="Cache-Control" content="no-siteapp" />
<meta name="mobile-agent" content="format=html5;url=https://m.dgzj.com/plc/ximenziplc/104297.html">
<meta name="mobile-agent" content="format=xhtml;url=https://m.dgzj.com/plc/ximenziplc/104297.html">
<title>西门子PLC编程中的FB、FC、DB、OB是什么_西门子plc_电工之家</title>
<meta name="keywords" content="西门子PLC编程中的FB、FC、DB、OB是什么" />
<meta name="description" content="在西门子PLC编程语言中有FB、FC、DB、OB等语言，那么我们就来讲一讲西门子PLC编程中的FB、FC、DB、OB是什么？ 1、什么是OB？ OB是组织块，是英文Organization block的缩写，组织块是CPU系统和用户程序之间的接口。OB组织块是PLC编程底层语言，有一点像电脑主" />
<link rel="stylesheet" href="https://www.dgzj.com/skin/dgzj.css" type="text/css">
<script type="text/javascript" src="/js/dgzj.js"></script>
<script type="text/javascript">uaredirect("https://m.dgzj.com/plc/ximenziplc/104297.html");</script>
</head>
<body>
<div class="Top">电工之家_电工基础知识学习网站 </div>
<div class="Head">
	<div class="logo FL"><h2><a href="https://www.dgzj.com/"><img src="https://www.dgzj.com/images/logo.gif" alt="电工之家" /></a></h2></div>
<ul class="ullink FR">
            <li><a href="https://www.dgzj.com/zhishi/yiqiyibiao/" target="_blank">电工仪表</a><a href="https://www.dgzj.com/anquan/" target="_blank">电工安全</a><a href="https://www.dgzj.com/tongxin/" target="_blank">通信技术</a><a href="https://www.dgzj.com/jiazhuang/" target="_blank">家装电工</a><a href="https://www.dgzj.com/ruodian/" target="_blank">弱电工程</a><a href="https://www.dgzj.com/gongkong/" target="_blank">工控知识</a></li>
            <li><a href="https://www.dgzj.com/nuantong/" target="_blank">暖通空调</a><a href="https://www.dgzj.com/dgzj/" target="_blank">电工总结</a><a href="https://www.dgzj.com/dggj/" target="_blank">电工工具</a><a href="https://www.dgzj.com/jixie/" target="_blank">机械维修</a><a href="https://www.dgzj.com/qiche/" target="_blank">汽车维修</a><a href="https://www.dgzj.com/plc/" target="_blank">plc编程</a></li>
        </ul>
       	</div>
<div class="Nav">
	<a href='https://www.dgzj.com/'>电工之家</a>
    
    <a href='https://www.dgzj.com/dgjc/' >电工基础</a>
    
    <a href='https://www.dgzj.com/dgjs/' >电工技术</a>
    
    <a href='https://www.dgzj.com/ydcs/' >用电常识</a>
    
    <a href='https://www.dgzj.com/peidian/' >配电知识</a>
    
    <a href='https://www.dgzj.com/dgst/' >电工试题</a>
    
    <a href='https://www.dgzj.com/fljd/' >防雷接地</a>
    
    <a href='https://www.dgzj.com/dqgc/' >电气工程</a>
    
    <a href='https://www.dgzj.com/weixiu/' >维修电工</a>
    
    <a href='https://www.dgzj.com/jiadian/' >家电维修</a>
    
    <a href='https://www.dgzj.com/dianzi/' >电子技术</a>
    
    <a href='https://www.dgzj.com/zhishi/'  rel='dropmenu31'>电工知识</a>
    
    <a href='https://www.dgzj.com/xinwen/' >电气资讯</a>
    
</div>
<div class="main4">
	<div class="m4_left FL">
    	<div class="m4_t1">当前位置：<a href='https://www.dgzj.com/'>电工之家</a> > <a href='/plc/'>plc</a> > <a href='/plc/ximenziplc/'>西门子plc</a> > 正文</div>
           <h1 class="m4_box4">西门子PLC编程中的FB、FC、DB、OB是什么</h1>
           <div class="m4_box5">时间:2020-04-06 09:06  来源:电工之家</div>
        <div class="m4_box6">
        	<p>在西门子PLC编程语言中有FB、FC、DB、OB等语言，那么我们就来讲一讲西门子PLC编程中的FB、FC、DB、OB是什么？ <br />
1、什么是OB？ <br />
OB是组织块，是英文Organization block的缩写，组织块是CPU系统和用户程序之间的接口。OB组织块是PLC编程底层语言，有一点像电脑主板的BIOS一样，有一些OB组织块是PLC程序工作的必要先决条件,如OB1循环调用指令，如果程序不调用OB1,我们编写的程序只会扫描一次之后就会停止了，这将无法正常工作。所以我们在编写程序时，必须在OB1中调用或编写，或利用中断指令OB32。 <br />
在PLC中有很多不同作用的组织块，比如，可以循环调用的OB1;可以检测通讯是否正常的OB87; CPU硬件故障组织块OB84;CPU上电只执行一次的OB100等。 <br />
OB组织块就是像是一个单位，各个部门的一把手一样，在单位中各司其职，组织调度自己部门的人员来完成工作，它有着决定权和优先权。OB组织块也像一个调度，根据PLC运行的不同状况，输出不同的控制指令。 <br />
在西门子编程中，有很多功能的OB组织块，这里不一一列举，可以根据自己编程需要查询相关手册。 <br />
2、什么是FB？ <br />
FB是功能块，FB功能块就是把一些应用程序模块化了，就好像把编写好的程序封装在一个盒子里，我们想用的时候就拿过来用，不需要在编写相同控制功能的程序了，为我们编程提供了便利。FB功能块是由单独的背景数据块做支撑的，就好比把封装好程序的相同的盒子，它们拥有自己独立的房间，即使它们相貌是完全一样的，确可以根据房间的不同来区别它们，这就是在应用的时候互不干扰的原因。 <br />
在西门子编程中，功能块有两种，一种是系统定义好的功能块，一种是用户自定义功能块。 <br />
①、系统功能块 <br />
系统定义好的功能块，它是西门子工程师把一些常用的、不常用的程序编写封装好的，我们只管拿来用，不可以修改。如，SFB 0 递增计数器。 <br />
优点：是在编程时方便、省时。 <br />
缺点：是你得按它的规则来应用，必须熟悉功能块的应用。 <br />
②、用户功能块 <br />
用户自定义的功能块，是我们需要我们自己编写封装的，引脚的多少和功能都是需要自己定义的。 <br />
优点：可以根据自己的控制工艺需要来编写、定义引脚，方便灵活应用。 <br />
缺点：需要自己编程，工作量比较大。 <br />
3、什么是FC？ <br />
FC是功能，FC是没有自己独立的背景数据块，FC与FB的应用基本是致的，就好像FC没有自己独立的房间，大家都住在一个房间里，所以它们必须是不同的，不能长一样的相貌，以便于应用的时候区别对待，避免了混乱。 <br />
FC也是分为系统功能与用户自定义功能，它与FB应用方法基本相同，不同的是FB运行过程的数据，都可以在DB块中保存下来，只到下一次运算，被新的数据覆盖，而FC是不具备背景DB块保存数据。 <br />
4、什么是OB？ <br />
OB是数据块，它是用来存储设备、生产线中的变量数据的，数据块是用来实现各逻辑块之间的数据据交换、数据传递和共享数据。可以理解它是由一个个小格子的数据集散中心，DB数据块就是存储、转运数据。</p>
<div><img style="cursor: pointer" onclick="window.open('/uploads/allimg/200406/1_200406090957_1.jpg')" border="0" alt="" src="/uploads/allimg/200406/1_200406090957_1.jpg" width="640" height="378" /><br />
OB数据块分为共享数据块（DB）和背景数据块（DI）。 <br />
共享数据块，用于存储PLC的全局数据，所有的FB、FC或OB都可以对通用数据块进行读写操作。 <br />
背景数据块（&ensp;DI），用于传递功能块的参数，只能被指定的功能块FB访问，调用功能块FB时，必须同时指定用于该功能块的即时数据块DI，即时数据块内的数据可以自动生成，它们可以是FB变量声明表中的数据。 <br />
FB、FC、DB、OB是如何应用的？ <br />
1、FB的应用 <br />
FB功能块一般是应用在大型、复杂控制系统中，能够实现重复的相同控制或各独立编程系统间相互兼容。怎么理解这句话呢，就拿我矿的充填自动化控制系统举例吧，充填自动化控制中，使用了非常多的开关阀和调节阀，因控制工艺的不同，少则十几二十个，多则几十上百个，各个阀的控制都是相同的，就是开关控制和调节控制，编程时就可以建立一个FB功能块，每一个阀控制来调用它，因为调用FB时产生的数据，存入调用时生成的独立DB背景数据块中，而会不会产生互相干扰的问题。这样就避免每一个阀控制都要独立编辑自己的控制程序了。 <br />
下图中的FB2，就是应用在不同的控制中，大家注意看一下它的背景数据块是不相同的，一个是DB2，一个是DB3。</div>
<div><img style="cursor: pointer" onclick="window.open('/uploads/allimg/200406/1_200406090834_1.jpg')" border="0" alt="" src="/uploads/allimg/200406/1_200406090834_1.jpg" width="640" height="431" /><br />
而在复杂的控制系统中，程序是需要很多人来编写的，每个人编写的习惯不同，会有兼容问题，他们只要把自己编写的程序封装成FB块，留出I/O接口就行了，大家编写的程序就会相互兼容了。这就是FB的优势所在。 <br />
***FB的应用是为了使编程模块化，简化编程，便于各独立编程系统中的相互兼容。*** <br />
2、FC的应用 <br />
FC的应用就比FB要简化一些，我们可以把程序封闭成FC，可以灵活调用，它是不可以重复调用的。它的功能与FB有很多的相同之处。我们可以理解FC是一个子程序，我们想用的是时候就调用它，不用的时候就不调用它。 <br />
FC的应用是把控制程序分类化，还是拿我矿充填自动化控制系统来说，充填是需要造浆、压力水、下砂控制等，在编程时，可以把各系统控制程序，独立编写FC块内，这样的程序对<a href='https://www.dgzj.com/wxby/' target='_blank'><u>检修</u></a>、维护都是有帮助的。 <br />
3、DB的应用 <br />
PLC处理的数据是二进制的，也就是1和0，所谓的数据就是一长串的1和0的组合，数据块就是存储这些数字串的一个方式。PLC还有别的存储方式，比如M映像区。 <br />
DB块是保存过程数据用的，可读可写，背景数据块是与FB同时使用的，在你调用FB时，会自动按照FB形参的数据类型自动生成。全局数据块是用户自己定义和创建的，你可以把你的需要的过程数据写入，也可以读出来。如果你想把I0.0的状态传送到DB1，可以写作： <br />
A I 0.0 <br />
= DB1.DBX0.1 <br />
这段程序就是把I0.0的状态写入到了DB1的第一位DBX0.1中。 <br />
*****DB数据块是具有断电保存功能的。就是我们把数据写入DB数据块之后，即使PLC掉电了，DB数据块中的数据是不会丢失的，直到数据被其它覆盖才会改变,我们可以利用这个特性，来保存一些计算的数据。***** <br />
4、OB的应用 <br />
程序是需要循环扫描来完成工作的，所以在编写程序的第一步，就是要建立一个OB1组织块，所有的程序都是需要OB1来调度执行的。 <br />
其它的OB组织块就要看它的功能是什么了，在程序时调用了。比如，我们想编写一个在PLC通电后复位数据程序，那么我们只要调用OB100，在OB100中调用此复位程序，那么这段程序只在PLC通电瞬间做一次复位，之后就停止工作，不参与之后的程序控制了。而OB85、OB86、OB87是故障检测，我们可以根据控制工艺要求来调用它们完成控制。 <br />
PLC程序编写的注意事项 <br />
1、在修改程序时，不要贸然的删除它，把不需要的或有疑问的程序段先屏蔽，在确定不需要时在删除。 <br />
2、在调试、修改程序时，一定要做提前做好备份工作，可以在修改时出现错误恢复回去，这一点很重要，矿山<a href='https://www.dgzj.com/zidonghua/' target='_blank'><u>电气</u></a>小东曾经因没有备份而途添不少麻烦的。 <br />
3、自己编写的程序是需要实际应用来验证的，有的时候编写时是不会体现出BUG的，只有在实际应用中才能够体现出来，这个时间有时会很长才能体现出来，所以新编写的程序是要验证观察的，尤其是新学编程的人员。 <br />
4、给程序加一个密码有时候是必要的，它的作用是避免自己或别人误操作修改程序，也是保护自己的程序不被有目的的人所利用，也算是保护知识产权的一种手段吧。</div>
        </div>
<div style="margin:10px auto"><script type="text/javascript">show_pc_5()</script></div>
        <div class="f6_pagess">
	<ul class="pagelist">
        	
	</ul>
		</div>
        <div class="m4_box7">
        	上一篇：<a href='/plc/ximenziplc/103627.html'>西门子plc热电偶的组态编程以及接线</a> <br />
			下一篇：<a href='/plc/ximenziplc/104410.html'>西门子s7-200smart热电偶硬件接线</a> 
        </div>
<div style="margin:10px auto"><script type="text/javascript">show_pc_6()</script></div>
        <div class="m4_box21">
        	<div class="m4_t2">看过《西门子PLC编程中的FB、FC、DB、OB是什么》的人还看了以下文章</div>
<div style="height:8px;"></div>
<div align="center">
<table width="655" height="128" border="0" cellpadding="0" cellspacing="0">
    <!--DWLayoutTable-->
    <tr>
      <td width="155"  rowspan="2" align="center" valign="middle"><a href='/plc/ximenziplc/115590.html' target="_blank"><img src='/uploads/allimg/220221/1_220221202347_1-lp.jpg'  width='120' height='100' alt="在西门子PLC中读取或搜索Tag的过程"></a></td>
      <td width="500" height="30" align="left" valign="middle" style="line-height:30px; font-size:15px;  font-weight:bold;font-family: Microsoft YaHei;  text-indent:10px"><a href="/plc/ximenziplc/115590.html" title="在西门子PLC中读取或搜索Tag的过程"  target="_black">在西门子PLC中读取或搜索Tag的过程</a></td>
    </tr>

    <tr>
      <td height="85" align="left" valign="middle" style="color:#666666; text-indent:10px; padding-left:10px; padding-right:10px; font-size:13px; line-height:20px;"> 1：打开Siemens Simatic Manager 2：搜索所需的PLC程序，然后按OK。 3：点击S7程序，然后点击符号如下图所示。 4：将打开一个新窗口并按ok。 5：打开菜单Find and Replace 输入所需查询的tag。假设我们需要一个温度变送器，所以输入temp文本。 然后点击Find...</td>
    </tr>
  </table>
<div style="border-top:1px dashed #EBEBEB; "></div>
<table width="655" height="128" border="0" cellpadding="0" cellspacing="0">
    <!--DWLayoutTable-->
    <tr>
      <td width="155"  rowspan="2" align="center" valign="middle"><a href='/plc/ximenziplc/114191.html' target="_blank"><img src='/uploads/allimg/211116/1_211116103828_1-lp.jpg'  width='120' height='100' alt="西门子plc程序暂停功能怎么实现"></a></td>
      <td width="500" height="30" align="left" valign="middle" style="line-height:30px; font-size:15px;  font-weight:bold;font-family: Microsoft YaHei;  text-indent:10px"><a href="/plc/ximenziplc/114191.html" title="西门子plc程序暂停功能怎么实现"  target="_black">西门子plc程序暂停功能怎么实现</a></td>
    </tr>

    <tr>
      <td height="85" align="left" valign="middle" style="color:#666666; text-indent:10px; padding-left:10px; padding-right:10px; font-size:13px; line-height:20px;"> 这个没有做过数控系统开发的，根本不知道这里面的门道。注意，对于运动控制特别是有位置控制的话，暂停并不是将当前脉冲停止即可，大多数情况下必须有个减速暂停功能，否则会造成伺服报警或步进丢步。当然大多数PLC能实现此功能，点动情况实际上就是这样操作...</td>
    </tr>
  </table>
<div style="border-top:1px dashed #EBEBEB; "></div>
<table width="655" height="128" border="0" cellpadding="0" cellspacing="0">
    <!--DWLayoutTable-->
    <tr>
      <td width="155"  rowspan="2" align="center" valign="middle"><a href='/plc/ximenziplc/111254.html' target="_blank"><img src='/uploads/allimg/210511/1_210511110656_1-lp.jpg'  width='120' height='100' alt="西门子PLC用少数IO接口连接更多按钮的方法"></a></td>
      <td width="500" height="30" align="left" valign="middle" style="line-height:30px; font-size:15px;  font-weight:bold;font-family: Microsoft YaHei;  text-indent:10px"><a href="/plc/ximenziplc/111254.html" title="西门子PLC用少数IO接口连接更多按钮的方法"  target="_black">西门子PLC用少数IO接口连接更多按钮的方法</a></td>
    </tr>

    <tr>
      <td height="85" align="left" valign="middle" style="color:#666666; text-indent:10px; padding-left:10px; padding-right:10px; font-size:13px; line-height:20px;"> 西门子PLC为例说明用少数IO接口连接更多按钮的方法。 接线如图一所示: 梯形图如图二所示: 在这个例子中使用了SB0到SB5共6个按钮，占用6个输入口。操作时，按下按钮SB0,再分别按其它按钮，可以得到5个按钮信号；不按按钮SB0，操作其它按钮，又可以得到5个按钮...</td>
    </tr>
  </table>
<div style="border-top:1px dashed #EBEBEB; "></div>
<table width="655" height="128" border="0" cellpadding="0" cellspacing="0">
    <!--DWLayoutTable-->
    <tr>
      <td width="155"  rowspan="2" align="center" valign="middle"><a href='/plc/ximenziplc/111008.html' target="_blank"><img src='/images/defaultpic.gif'  width='120' height='100' alt="学西门子PLC的方法"></a></td>
      <td width="500" height="30" align="left" valign="middle" style="line-height:30px; font-size:15px;  font-weight:bold;font-family: Microsoft YaHei;  text-indent:10px"><a href="/plc/ximenziplc/111008.html" title="学西门子PLC的方法"  target="_black">学西门子PLC的方法</a></td>
    </tr>

    <tr>
      <td height="85" align="left" valign="middle" style="color:#666666; text-indent:10px; padding-left:10px; padding-right:10px; font-size:13px; line-height:20px;"> 学PLC不单单是要看书就能学会的，至少要从两方面入手，基础+软件 首先，学习PLC编程首先需要从理论基础开始。学习PLC的基本原理，硬件：搞清楚输入和输出端的基本结构，熟悉端口的基本电气要求。 第二，软件方面：对于PLC系统，必须搞清楚什么是I/O刷新，这...</td>
    </tr>
  </table>
<div style="border-top:1px dashed #EBEBEB; "></div>
<table width="655" height="128" border="0" cellpadding="0" cellspacing="0">
    <!--DWLayoutTable-->
    <tr>
      <td width="155"  rowspan="2" align="center" valign="middle"><a href='/plc/ximenziplc/110020.html' target="_blank"><img src='/images/defaultpic.gif'  width='120' height='100' alt="西门子plc1500用什么指令怎么二进制转换成十进制"></a></td>
      <td width="500" height="30" align="left" valign="middle" style="line-height:30px; font-size:15px;  font-weight:bold;font-family: Microsoft YaHei;  text-indent:10px"><a href="/plc/ximenziplc/110020.html" title="西门子plc1500用什么指令怎么二进制转换成十进制"  target="_black">西门子plc1500用什么指令怎么二进制转换成</a></td>
    </tr>

    <tr>
      <td height="85" align="left" valign="middle" style="color:#666666; text-indent:10px; padding-left:10px; padding-right:10px; font-size:13px; line-height:20px;"> 没有专门的指令，你可以自己写一个二进制转十进制的功能: 以字节例如:二进制存储在MB10,十进制存储在MB11, MB11=M10.7*2^7+M10.6*2^6+M10.5*2^5+M10.4*2^4+M10.3*2^3+M10.2*2^2+M10.1*2^1+M10.0*2^0 功能中的加减乘除用相应的功能块去转换。...</td>
    </tr>
  </table>
<div style="border-top:1px dashed #EBEBEB; "></div>

</div>
</div>
</div>
    <div class="m4_right FR">
        <div class="m4_box2">
        	<div class="m4_t2">热门文章</div>
            <ul>
                <li><a href="https://www.dgzj.com/plc/ximenziplc/76225.html">西门子plc锁存型延时通定时器指令</a></li>
<li><a href="https://www.dgzj.com/plc/ximenziplc/96239.html">如何使用西门子s7-200模拟器去测试程序</a></li>
<li><a href="https://www.dgzj.com/plc/ximenziplc/72311.html">西门子S7-200 PLC编程软件操作图解</a></li>
<li><a href="https://www.dgzj.com/plc/ximenziplc/85893.html">西门子s7-200plc怎么控制直流电机</a></li>
<li><a href="https://www.dgzj.com/plc/ximenziplc/92269.html">西门子S7-1200的PLC来控制电磁阀的动作</a></li>
<li><a href="https://www.dgzj.com/plc/ximenziplc/101983.html">fbd编程常用功能块</a></li>
<li><a href="https://www.dgzj.com/plc/ximenziplc/97405.html">西门子STEP7软件中加减乘除指令</a></li>
<li><a href="https://www.dgzj.com/plc/ximenziplc/101748.html">西门子300编程中FB块用到C或者T之后多次</a></li>
<li><a href="https://www.dgzj.com/plc/ximenziplc/82931.html">西门子S7300模拟量I/O使用图解</a></li>
<li><a href="https://www.dgzj.com/plc/ximenziplc/90465.html">如何设置西门子EM222扩展模块</a></li>
<li><a href="https://www.dgzj.com/plc/ximenziplc/97150.html">西门子S7-200能控制多少个伺服</a></li>
<li><a href="https://www.dgzj.com/plc/ximenziplc/68834.html">西门子S7200四则运算指令表详解</a></li>
<li><a href="https://www.dgzj.com/plc/ximenziplc/72394.html">S7-200如何通过向导设定PID教程</a></li>
<li><a href="https://www.dgzj.com/plc/ximenziplc/73602.html">step7安装提示重启怎么解决</a></li>
<li><a href="https://www.dgzj.com/plc/ximenziplc/76142.html">西门子S7300用异或指令实现一键启停</a></li>
<li><a href="https://www.dgzj.com/plc/ximenziplc/82948.html">西门子PLC生产日期和生命周期含义说明</a></li>
<li><a href="https://www.dgzj.com/plc/ximenziplc/101484.html">西门子300PLC与温控表怎样连接通讯</a></li>
<li><a href="https://www.dgzj.com/plc/ximenziplc/86394.html">WinCC C语言脚本推荐</a></li>
<li><a href="https://www.dgzj.com/plc/ximenziplc/100712.html">博图软件支持所有西门子型号都能组态吗</a></li>
<li><a href="https://www.dgzj.com/plc/ximenziplc/104297.html">西门子PLC编程中的FB、FC、DB、OB是什么</a></li>

            </ul>
        </div>
</div>
    <div class="clear"></div>
</div>
<div class="footer">
<a href="https://www.dgzj.com/support/about.html" target="_blank">关于本站</a> | <a href="https://www.dgzj.com/support/lianxi.html" target="_blank">联系我们</a> |  <a href="https://www.dgzj.com/support/weixin.html" target="_blank">微信公众号</a>  |  <a href="https://m.dgzj.com/" title="电工之家手机版" target="_blank">手机版</a> | <script type="text/javascript" src="https://www.dgzj.com/js/tongji.js"></script> 
		<p>Copyright &copy; 2008-2022 <a href="https://www.dgzj.com/">电工之家</a> (www.dgzj.com)版权所有<script type="text/javascript" src="https://www.dgzj.com/js/ts.js"></script> 
</p>	
<script src='https://www.dgzj.com/js/icp.js' language='javascript'></script></div> 
</body>
</html>